home *** CD-ROM | disk | FTP | other *** search
- 1 ' **********************************************************
- 2 '
- 3 ' This program plays the game of concentration.
- 4 ' There are 12 possible levels of difficulty.
- 5 ' The program can handle from 1 to 6 players.
- 6 ' - programmed by Anne Taft
- 7 '
- 8 ' *********************************************************
- 10 CLS
- 12 OPTION BASE 1
- 14 DEFINT X
- 16 DIM XUSED(52),XSCORE(6)
- 18 DIM T$(52),CARD$(52),P$(6)
- 100 REM ******** initialize game *************
- 150 GOSUB 1400 ' # of players & skill level
- 190 RESTORE 300
- 200 FOR X = 1 TO XNL
- 210 READ N$
- 220 CARD$(X) = N$ + CHR$(3)
- 230 CARD$(X+XNL) = N$ + CHR$(4)
- 240 CARD$(X+(2*XNL)) = N$ + CHR$(5)
- 250 CARD$(X+(3*XNL)) = N$ + CHR$(6)
- 260 NEXT X
- 270 FOR X = 1 TO XN
- 280 XUSED(X) = 0
- 290 NEXT X
- 300 DATA " A"," 2"," 3"," 4"," 5"," 6"," 7"," 8"," 9","10"," J"," Q"," K"
- 310 FOR XX = 1 TO 2
- 320 N = VAL(MID$(TIME$,7,2))
- 330 RANDOMIZE N
- 340 REM ****** SHUFFLE AND DEAL ******
- 350 FOR X = 1 TO (XN-1)
- 360 XL = INT((XN+1-X)*RND(1)+1)
- 370 SWAP CARD$(X) , CARD$(XL+X-1)
- 380 NEXT X
- 390 NEXT XX
- 395 RESTORE 440
- 400 FOR X = 1 TO XN
- 410 READ N$
- 420 T$(X) = N$
- 430 NEXT X
- 440 DATA " 1 "," 2 "," 3 "," 4 "," 5 "," 6 "," 7 "," 8 "," 9 "," 10"," 11"," 12"
- 450 DATA " 13"," 14"," 15"," 16"," 17"," 18"," 19"," 20"," 21"," 22"," 23"," 24"
- 460 DATA " 25"," 26"," 27"," 28"," 29"," 30"," 31"," 32"," 33"," 34"," 35"," 36"
- 470 DATA " 37"," 38"," 39"," 40"," 41"," 42"," 43"," 44"," 45"," 46"," 47"," 48"
- 480 DATA " 49"," 50"," 51"," 52"
- 490 INPUT "Press RETURN to start the game", N$
- 500 FOR X=1 TO XPN: XSCORE(X) = 0:NEXT X
- 505 XSUM = 0
- 510 MATCH = 0
- 512 XT = 1
- 520 XTURN = 0
- 530 REM *********** START OF MAJOR LOOP *************************
- 535 XTURN = XTURN + 1
- 540 GOSUB 1120 'DISPLAY ROUTINE
- 550 IF XPN=1 THEN PRINT ELSE PRINT P$(XT);"'S TURN:"
- 560 INPUT "First card selected: ",XTRY1
- 570 IF XTRY1 < 1 THEN GOTO 600
- 580 IF XTRY1 > XN THEN GOTO 600
- 590 GOTO 620
- 600 PRINT "Please choose a card number between 1 and ";XN;"."
- 610 GOTO 560
- 620 FOR X = 1 TO XN
- 630 IF XTRY1 =XUSED(X) GOTO 660
- 640 NEXT X
- 650 GOTO 690
- 660 PRINT "The card you have chosen has already been matched."
- 670 PRINT "Please choose another card."
- 680 GOTO 560
- 690 INPUT "Second card selected: ",XTRY2
- 700 IF XTRY2 < 1 THEN GOTO 760
- 710 IF XTRY2 > XN THEN GOTO 760
- 720 IF XTRY2 <> XTRY1 THEN GOTO 780
- 730 PRINT "That card was your first selection."
- 740 PRINT "Please choose a different card."
- 750 GOTO 690
- 760 PRINT "Please choose a card number between 1 and ";XN;"."
- 770 GOTO 690
- 780 FOR X = 1 TO XN
- 790 IF XTRY2 = XUSED(X) THEN GOTO 820
- 800 NEXT X
- 810 GOTO 850
- 820 PRINT "The card you have chosen has already been matched."
- 830 PRINT "Please choose another card."
- 840 GOTO 690
- 850 IF LEFT$(CARD$(XTRY1),2) = LEFT$(CARD$(XTRY2),2) THEN MATCH = 1
- 860 TEMP1$ = T$(XTRY1)
- 870 T$(XTRY1) = CARD$(XTRY1)
- 880 TEMP2$ = T$(XTRY2)
- 890 T$(XTRY2) = CARD$(XTRY2)
- 900 GOSUB 1120 'DISPLAY ROUTINE
- 910 IF MATCH = 0 GOTO 915
- 912 PRINT: PRINT " GOOD! You have a match!"
- 915 REM
- 925 IF LEFT$(N$,1) = "0" GOTO 1010
- 930 IF MATCH = 1 GOTO 960
- 940 T$(XTRY1) = TEMP1$
- 950 T$(XTRY2) = TEMP2$
- 960 REM
- 970 IF MATCH=1 THEN XSCORE(XT)=XSCORE(XT)+1: XSUM=XSUM+1
- 980 IF MATCH = 1 THEN XUSED((2*XSUM)-1) = XTRY1
- 990 IF MATCH = 1 THEN XUSED(2*XSUM) = XTRY2
- 995 XT=XT+1:IF XT>XPN THEN XT=1 ' WHO'S NEXT?
- 1000 MATCH = 0
- 1001 PRINT: PRINT
- 1002 INPUT "Strike RETURN to continue, 0 to quit: ",N$
- 1003 IF (2*XSUM) >= XN GOTO 1010
- 1004 IF LEFT$(N$,1) = "0" GOTO 1010
- 1005 GOTO 530
- 1010 REM *************END OF MAJOR LOOP*****************************
- 1020 GOSUB 1300 ' scoring routine
- 1030 INPUT "Do you want to play another game now? ", N$
- 1040 A$ = LEFT$(N$,1)
- 1050 IF A$ = "Y" GOTO 100
- 1060 IF A$ = "y" GOTO 100
- 1070 IF A$ = "N" GOTO 1220
- 1080 IF A$ = "n" GOTO 1220
- 1090 PRINT "Please answer yes or no:"
- 1100 GOTO 1030
- 1110 REM **********DISPLAY ROUTINE**************************
- 1120 GOSUB 1250 'CLS AND PRINT HEADING
- 1130 XTAB = (77-5*(XNL-1))\2
- 1150 FOR XR = 0 TO 3
- 1160 PRINT: PRINT: PRINT TAB(XTAB);
- 1170 FOR X = 1 TO XNL
- 1180 PRINT T$(X+(XR*XNL));SPACE$(2);
- 1190 NEXT X
- 1200 NEXT XR
- 1205 PRINT
- 1210 RETURN
- 1215 REM **********END OF PROGRAM*************************
- 1220 PRINT "Goodbye. "
- 1230 END
- 1250 REM ********CLEAR SCREEN & PRINT HEADING ************
- 1260 CLS:PRINT:PRINT:PRINT TAB(33);"CONCENTRATION"
- 1270 PRINT:PRINT:RETURN
- 1300 REM *********** FINAL SCORING ************************
- 1310 GOSUB 1250
- 1320 IF XPN > 1 THEN GOTO 1350
- 1330 PRINT TAB(10);"Your score is ";XSCORE(1);" matches in ";XTURN;" tries."
- 1340 PRINT: RETURN
- 1350 FOR X = 1 TO XPN
- 1360 PRINT TAB(10);"Score of ";P$(X);" is ";XSCORE(X);" matches."
- 1370 PRINT: NEXT X
- 1380 RETURN
- 1400 REM ***** selection of no. of players and skill level ******
- 1410 GOSUB 1250 'CLS and print heading
- 1420 INPUT "From 1 to 6 players may play. How many this time? ",XPN
- 1430 IF XPN = 1 THEN GOTO 1500
- 1440 IF (XPN>6)OR(XPN<1) GOTO 1410
- 1450 FOR X = 1 TO XPN
- 1460 PRINT:PRINT "Name of player # ";X:INPUT " : ",P$(X)
- 1470 NEXT X
- 1500 REM *** skill level ***
- 1510 GOSUB 1250 'CLS and print heading
- 1520 PRINT "You can play at any one of 12 different levels of skill."
- 1540 PRINT TAB(10);"B - Beginner - easy";TAB(40);"6 - Intermediate"
- 1550 PRINT TAB(10);"1";TAB(40);"7"
- 1560 PRINT TAB(10);"2";TAB(40);"8 - Advanced Intermediate"
- 1570 PRINT TAB(10);"3 - Advanced Beginner";TAB(40);"9"
- 1580 PRINT TAB(10);"4";TAB(40);"A - Advanced"
- 1590 PRINT TAB(10);"5";TAB(40);"E - Expert"
- 1600 PRINT:INPUT "Please select a skill level for this game: ",XL$
- 1610 XNL = INSTR(2," B123456789AE",XL$)
- 1620 IF XNL = 0 THEN GOTO 1500 ELSE XN = 4*XNL
- 1650 RETURN
- for this game: ",XL$
- 1610 XNL = INSTR(2," B123456789AE",XL$)
- 1620 IF XNL = 0